﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TestProject1.MainClasses;
namespace TestProject1
{
    [TestClass]
    public class TestDdepartament
    {
        private IList<Departament> DepList = new List<Departament>();
        [TestMethod]
        public void TestMethodDepInit()
        {   // Проверка инициализации категории

            Departament d = new Departament();
            Assert.AreEqual(0, d.GetID());
            Assert.AreEqual("", d.GetName());
            Assert.AreEqual("", d.GetStatus());
        }
        [TestMethod]
        public void TestMethodDepAdd()
        {   // Проверка добавления одной категории в список
            Departament d = new Departament();
            DepList.Add(d.add(991, "dep1","status1"));
            Assert.IsNotNull(DepList.First().GetID());
            Assert.IsNotNull(DepList.First().GetName());
            Assert.IsNotNull(DepList.First().GetStatus());
            Assert.IsNotNull(DepList.First());

        }
        [TestMethod]
        public void TestMethodDepEqualAdding()
        {   // Проверка правильного заполнения полей при добавлении категории
            Departament d = new Departament();
            int i = 1111;
            string s1 = "cat100500";
            string s2 = "no status";
            DepList.Add(d.add(1111, "cat2","st"));
            Assert.AreEqual(i, DepList.First().GetID());
            Assert.AreNotEqual(s1, DepList.First().GetName());
            Assert.AreNotEqual(s1, DepList.First().GetStatus());
        }
        [TestMethod]
        public void TestMethodDepAddingToList()
        {   // Проверка добавления нескольких категорий в список     

            Departament d = new Departament();
            DepList.Add(d.add(1111, "cat2", "st"));
            Assert.IsNotNull(DepList.First());
            Departament d1 = new Departament();
            DepList.Add(d1.add(1112, "cat3", "st2"));
            Assert.IsNotNull(DepList.ElementAt(1));
            Departament d2 = new Departament();
            DepList.Add(d2.add(1131, "cat3", "s3"));
            Assert.IsNotNull(DepList.ElementAt(2));
        }
        [TestMethod]
        public void TestMethodDepEdit()
        {
            Departament d = new Departament();
            DepList.Add(d.add(666, "dep1", "main"));
            int i = 199;
            string s1 = "dep2";
            string s2 = "tech support";
            DepList.First().edit(i, s1,s2);
            Assert.AreEqual(i, DepList.First().GetID());
            Assert.AreEqual(s1, DepList.First().GetName());
            Assert.AreEqual(s2, DepList.First().GetStatus());
        }
        [TestMethod]
        public void TestMethodDepRemove()
        {   //Проверка удаления категории из списка

            Departament d = new Departament();
            DepList.Add(d.add(666, "dep1", "main"));
            Departament d1 = new Departament();
            DepList.Add(d1.add(667, "dep2", "tech support"));
            Departament d2 = new Departament();
            DepList.Add(d2.add(668, "dep3", "tech support"));
            Departament d3 = new Departament();
            DepList.Add(d3.add(669, "dep4", "testers"));
            Departament d4 = new Departament();
            DepList.Add(d4.add(665, "dep5", "cleaners"));
            int cnt = DepList.Count();

            for (int i = 0; i < DepList.Count(); i++)
            {
                if (DepList.ElementAt(i).GetStatus() == "tech support")
                {
                    Assert.IsNotNull(DepList.ElementAt(i + 1));
                    DepList.RemoveAt(i); cnt--;

                }
                Assert.AreEqual(cnt, DepList.Count());
            }
        }
    }
}
